const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return `${[year, month, day].map(formatNumber).join('-')} ${[hour, minute, second].map(formatNumber).join(':')}`
}

const formatDate = (date, yearInterval) => {
    let year = date.getFullYear()
    if(yearInterval){
        year = year + parseInt(yearInterval); 
    }
    const month = date.getMonth() + 1
    const day = date.getDate()
    return `${[year, month, day].map(formatNumber).join('-')}`
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : `0${n}`
}
// 获取当前日期的前n天(传负值)和后n天(传正值)的日期
const getDateByNumber = n => {
    var n = n;
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    if(day <= n) {
        if(month > 1) {
            month = month - 1;
        } else {
            year = year - 1;
            month = 12;
        }
    }
    date.setDate(date.getDate() + n);
    year = date.getFullYear();
    month = date.getMonth() + 1;
    day = date.getDate();
    return `${[year, month, day].map(formatNumber).join('-')}`;
}
const getUuid = () => {
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
      s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 
    s[8] = s[13] = s[18] = s[23] = "-";
    var uuid = s.join("").replace("-","");
    return uuid
}
// 获取当前月第一天
const getDateMonthFrist = () => {
    var date = new Date();
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2,"0")
    var day = "01";
    return `${year}-${month}-${day}`;
}
/** 隐藏手机号 */
const formatPhone = (phone) => {
    return phone.replace(/^(\d{3})\d{4}(\d{4})$/, "$1****$2")
}

/** 隐藏身份证号 */
const formatCardNum = (cardNum) => {
    return cardNum.replace(/^(\d{6})\d{8}([A-Za-z0-9]{4})$/, "$1********$2")
}
module.exports = {
  formatTime,
  formatDate,
  getDateByNumber,
  getUuid,
  getDateMonthFrist,
  formatPhone,
  formatCardNum
}
